home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / QuickTime VR / MacOS / QuickDraw™ 3D 1.0.6F4 SDK / Development / Interfaces / QD3DController.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-11-14  |  8.5 KB  |  300 lines  |  [TEXT/MPS ]

  1. /******************************************************************************
  2.  **                                                                             **
  3.  **     Module:        QD3DController.h                                         **
  4.  **                                                                          **
  5.  **                                                                          **
  6.  **     Purpose:     Each physical device is represented in the system by a     **
  7.  **                 Controller record.  A device driver typically creates     **
  8.  **                 a controller.  Controller feeds changes in coordinates     **
  9.  **                 to a Tracker.                                             **
  10.  **                                                                          **
  11.  **                                                                          **
  12.  **     Copyright (C) 1992-1995 Apple Computer, Inc.  All rights reserved.     **
  13.  **                                                                          **
  14.  **                                                                          **
  15.  *****************************************************************************/
  16. #ifndef QD3DController_h
  17. #define QD3DController_h
  18.  
  19. #ifndef QD3D_h
  20. #include <QD3D.h>
  21. #endif  /*  QD3D_h  */
  22.  
  23. #if PRAGMA_ONCE
  24.     #pragma once
  25. #endif
  26.  
  27. #if defined(__MWERKS__)
  28.     #pragma enumsalwaysint on
  29.     #pragma align_array_members off
  30.     #pragma options align=native
  31. #endif
  32.  
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif  /*  __cplusplus  */
  36.  
  37.  
  38. /******************************************************************************
  39.  **                                                                             **
  40.  **                                Type Definitions                             **
  41.  **                                                                             **
  42.  *****************************************************************************/
  43.  
  44. #define kQ3ControllerSetChannelMaxDataSize        256
  45.  
  46. typedef TQ3Status (*TQ3ChannelGetMethod) (
  47.     TQ3ControllerRef            controllerRef,
  48.     unsigned long                channel,
  49.     void                        *data,
  50.     unsigned long                *dataSize);
  51.  
  52. typedef TQ3Status (*TQ3ChannelSetMethod) (
  53.     TQ3ControllerRef            controllerRef,
  54.     unsigned long                channel,
  55.     const void                    *data,
  56.     unsigned long                dataSize);
  57.  
  58. typedef struct TQ3ControllerData {
  59.     char                        *signature;
  60.     unsigned long                valueCount;
  61.     unsigned long                channelCount;
  62.     TQ3ChannelGetMethod            channelGetMethod;
  63.     TQ3ChannelSetMethod            channelSetMethod;
  64. } TQ3ControllerData;
  65.  
  66.  
  67. /******************************************************************************
  68.  **                                                                             **
  69.  **                                     Routines                                 **
  70.  **                                                                             **
  71.  *****************************************************************************/
  72.  
  73. QD3D_EXPORT TQ3Status Q3Controller_GetListChanged (
  74.     TQ3Boolean                    *listChanged,
  75.     unsigned long                *serialNumber);
  76.  
  77. QD3D_EXPORT TQ3Status Q3Controller_Next(
  78.     TQ3ControllerRef            controllerRef,
  79.     TQ3ControllerRef            *nextControllerRef);
  80.  
  81. QD3D_EXPORT TQ3ControllerRef Q3Controller_New(
  82.     const TQ3ControllerData        *controllerData);
  83.  
  84. QD3D_EXPORT TQ3Status Q3Controller_Decommission(
  85.     TQ3ControllerRef            controllerRef);
  86.  
  87. QD3D_EXPORT TQ3Status Q3Controller_SetActivation(
  88.     TQ3ControllerRef            controllerRef,
  89.     TQ3Boolean                    active);
  90.  
  91. QD3D_EXPORT TQ3Status Q3Controller_GetActivation(
  92.     TQ3ControllerRef            controllerRef,
  93.     TQ3Boolean                    *active);
  94.  
  95. QD3D_EXPORT TQ3Status Q3Controller_GetSignature(
  96.     TQ3ControllerRef            controllerRef,
  97.     char                        *signature,
  98.     unsigned long                numChars);
  99.  
  100. QD3D_EXPORT TQ3Status Q3Controller_SetChannel(
  101.     TQ3ControllerRef            controllerRef,
  102.     unsigned long                channel,
  103.     const void                    *data,
  104.     unsigned long                dataSize);
  105.  
  106. QD3D_EXPORT TQ3Status Q3Controller_GetChannel(
  107.     TQ3ControllerRef            controllerRef,
  108.     unsigned long                channel,
  109.     void                        *data,
  110.     unsigned long                *dataSize);
  111.  
  112. QD3D_EXPORT TQ3Status Q3Controller_GetValueCount(
  113.     TQ3ControllerRef            controllerRef,
  114.     unsigned long                *valueCount);
  115.  
  116. QD3D_EXPORT TQ3Status Q3Controller_SetTracker(
  117.     TQ3ControllerRef            controllerRef,
  118.     TQ3TrackerObject            tracker);
  119.  
  120. QD3D_EXPORT TQ3Status Q3Controller_HasTracker(
  121.     TQ3ControllerRef            controllerRef,
  122.     TQ3Boolean                    *hasTracker);
  123.  
  124. QD3D_EXPORT TQ3Status Q3Controller_Track2DCursor(
  125.     TQ3ControllerRef            controllerRef,
  126.     TQ3Boolean                    *track2DCursor);
  127.  
  128. QD3D_EXPORT TQ3Status Q3Controller_Track3DCursor(
  129.     TQ3ControllerRef            controllerRef,
  130.     TQ3Boolean                    *track3DCursor);
  131.  
  132. QD3D_EXPORT TQ3Status Q3Controller_GetButtons(
  133.     TQ3ControllerRef            controllerRef,
  134.     unsigned long                *buttons);
  135.  
  136. QD3D_EXPORT TQ3Status Q3Controller_SetButtons(
  137.     TQ3ControllerRef            controllerRef,
  138.     unsigned long                buttons);
  139.  
  140. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerPosition(
  141.     TQ3ControllerRef            controllerRef,
  142.     TQ3Point3D                    *position);
  143.  
  144. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerPosition(
  145.     TQ3ControllerRef            controllerRef,
  146.     const TQ3Point3D            *position);
  147.  
  148. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerPosition(
  149.     TQ3ControllerRef            controllerRef,
  150.     const TQ3Vector3D            *delta);
  151.  
  152. QD3D_EXPORT TQ3Status Q3Controller_GetTrackerOrientation(
  153.     TQ3ControllerRef            controllerRef,
  154.     TQ3Quaternion                *orientation);
  155.  
  156. QD3D_EXPORT TQ3Status Q3Controller_SetTrackerOrientation(
  157.     TQ3ControllerRef            controllerRef,
  158.     const TQ3Quaternion            *orientation);
  159.  
  160. QD3D_EXPORT TQ3Status Q3Controller_MoveTrackerOrientation(
  161.     TQ3ControllerRef            controllerRef,
  162.     const TQ3Quaternion            *delta);
  163.  
  164. QD3D_EXPORT TQ3Status Q3Controller_GetValues(
  165.     TQ3ControllerRef            controllerRef,
  166.     unsigned long                valueCount,
  167.     float                        *values,
  168.     TQ3Boolean                    *changed,
  169.     unsigned long                *serialNumber);
  170.  
  171. QD3D_EXPORT TQ3Status Q3Controller_SetValues(
  172.     TQ3ControllerRef            controllerRef,
  173.     const float                    *values,
  174.     unsigned long                valueCount);
  175.  
  176.  
  177. /******************************************************************************
  178.  **                                                                             **
  179.  **                                     Routines                                 **
  180.  **                                                                             **
  181.  *****************************************************************************/
  182.  
  183. QD3D_EXPORT TQ3ControllerStateObject Q3ControllerState_New(
  184.     TQ3ControllerRef            controllerRef);
  185.  
  186. QD3D_EXPORT TQ3Status Q3ControllerState_SaveAndReset(
  187.     TQ3ControllerStateObject    controllerStateObject);
  188.  
  189. QD3D_EXPORT TQ3Status Q3ControllerState_Restore(
  190.     TQ3ControllerStateObject    controllerStateObject);
  191.  
  192.  
  193. /******************************************************************************
  194.  **                                                                             **
  195.  **                                Type Definitions                             **
  196.  **                                                                             **
  197.  *****************************************************************************/
  198.  
  199. typedef TQ3Status (*TQ3TrackerNotifyFunc) (
  200.     TQ3TrackerObject            trackerObject,
  201.     TQ3ControllerRef            controllerRef);
  202.  
  203.  
  204. /******************************************************************************
  205.  **                                                                             **
  206.  **                                     Routines                                 **
  207.  **                                                                             **
  208.  *****************************************************************************/
  209.  
  210. QD3D_EXPORT TQ3TrackerObject Q3Tracker_New(
  211.     TQ3TrackerNotifyFunc        notifyFunc);
  212.  
  213. QD3D_EXPORT TQ3Status Q3Tracker_SetNotifyThresholds(
  214.     TQ3TrackerObject            trackerObject,
  215.     float                        positionThresh,
  216.     float                        orientationThresh);
  217.  
  218. QD3D_EXPORT TQ3Status Q3Tracker_GetNotifyThresholds(
  219.     TQ3TrackerObject            trackerObject,
  220.     float                        *positionThresh,
  221.     float                        *orientationThresh);
  222.  
  223. QD3D_EXPORT TQ3Status Q3Tracker_SetActivation (
  224.     TQ3TrackerObject            trackerObject,
  225.     TQ3Boolean                    active);
  226.  
  227. QD3D_EXPORT TQ3Status Q3Tracker_GetActivation (
  228.     TQ3TrackerObject            trackerObject,
  229.     TQ3Boolean                    *active);
  230.  
  231. QD3D_EXPORT TQ3Status Q3Tracker_GetButtons(
  232.     TQ3TrackerObject            trackerObject,
  233.     unsigned long                *buttons);
  234.  
  235. QD3D_EXPORT TQ3Status Q3Tracker_ChangeButtons(
  236.     TQ3TrackerObject            trackerObject,
  237.     TQ3ControllerRef            controllerRef,
  238.     unsigned long                buttons,
  239.     unsigned long                buttonMask);
  240.  
  241. QD3D_EXPORT TQ3Status Q3Tracker_GetPosition(
  242.     TQ3TrackerObject            trackerObject,
  243.     TQ3Point3D                    *position,
  244.     TQ3Vector3D                    *delta,
  245.     TQ3Boolean                    *changed,
  246.     unsigned long                *serialNumber);
  247.  
  248. QD3D_EXPORT TQ3Status Q3Tracker_SetPosition(
  249.     TQ3TrackerObject            trackerObject,
  250.     TQ3ControllerRef            controllerRef,
  251.     const TQ3Point3D            *position);
  252.  
  253. QD3D_EXPORT TQ3Status Q3Tracker_MovePosition(
  254.     TQ3TrackerObject            trackerObject,
  255.     TQ3ControllerRef            controllerRef,
  256.     const TQ3Vector3D            *delta);
  257.  
  258. QD3D_EXPORT TQ3Status Q3Tracker_GetOrientation(
  259.     TQ3TrackerObject            trackerObject,
  260.     TQ3Quaternion                *orientation,
  261.     TQ3Quaternion                *delta,
  262.     TQ3Boolean                    *changed,
  263.     unsigned long                *serialNumber);
  264.  
  265. QD3D_EXPORT TQ3Status Q3Tracker_SetOrientation(
  266.     TQ3TrackerObject            trackerObject,
  267.     TQ3ControllerRef            controllerRef,
  268.     const TQ3Quaternion            *orientation);
  269.  
  270. QD3D_EXPORT TQ3Status Q3Tracker_MoveOrientation(
  271.     TQ3TrackerObject            trackerObject,
  272.     TQ3ControllerRef            controllerRef,
  273.     const TQ3Quaternion            *delta);
  274.  
  275. QD3D_EXPORT TQ3Status Q3Tracker_SetEventCoordinates(
  276.     TQ3TrackerObject            trackerObject,
  277.     unsigned long                timeStamp,
  278.     unsigned long                buttons,
  279.     const TQ3Point3D            *position,
  280.     const TQ3Quaternion            *orientation);
  281.  
  282. QD3D_EXPORT TQ3Status Q3Tracker_GetEventCoordinates(
  283.     TQ3TrackerObject            trackerObject,
  284.     unsigned long                timeStamp,
  285.     unsigned long                *buttons,
  286.     TQ3Point3D                    *position,
  287.     TQ3Quaternion                *orientation);
  288.  
  289.  
  290. #ifdef __cplusplus
  291. }
  292. #endif  /*  __cplusplus  */
  293.  
  294. #if defined(__MWERKS__)
  295. #pragma options align=reset
  296. #pragma enumsalwaysint reset
  297. #endif
  298.  
  299. #endif  /*  QD3DController_h  */
  300.